import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import svgLoader from 'vite-svg-loader'
import path from 'path'
export default defineNuxtConfig({
  compatibilityDate: '2025-07-15',
  devtools: { enabled: false },
  ssr: true,
  
  // 添加兼容性配置
  nitro: {
    experimental: {
      wasm: true
    }
  },

  // 配置 CSP 策略
  app: {
    head: {
      title: 'Visit Latest AI APK Installer',
      meta: [
        { name: 'description', content: '' }
      ]
    }
  },

  modules: [
    '@nuxtjs/tailwindcss'
  ],
  
  // 明确配置组件自动引入
  components: {
    dirs: ['~/components']
  },
  
  css: ['~/assets/css/main.css'],
  
  // 配置 JSON 文件导入
  vite: {
    plugins: [
      createSvgIconsPlugin({
        iconDirs: [path.resolve(process.cwd(), 'assets/svg')]
      }),
      svgLoader()
      // 例如引入某些Vite插件
      // ui()
    ],
    build: {
      minify: "esbuild", // 构建时是否进行代码压缩
      sourcemap: false, // 打包时是否生成 sourcemap 文件
      rollupOptions: {
        output: {
          chunkFileNames: `_nuxt/[name].[hash].js`,
          entryFileNames: "_nuxt/[name].[hash].js",
          assetFileNames: "_nuxt/[name].[hash].[ext]",
        },
        cache: true, // 缓存
      },
      cssCodeSplit: true, // 是否开启css代码分割
      chunkSizeWarningLimit: 100, // 构建时超过这个阈值的文件打包会标黄
      reportCompressedSize: true, // 构建时是否生成 gzip 压缩包
      assetsInlineLimit: 3000, // 所有图片都不用打包进js文件中，【2000=2kb，当静态资源小于2kb时候，会被转换为base64打入js文件】
    },
    json: {
      stringify: true
    },
    css: {
      modules: {
        // 启用CSS Modules
        localsConvention: 'camelCase',
        // 自定义类名生成规则，生成类似 _T36r7 的后缀
        generateScopedName: '[name]_[local]_[hash:base64:5]'
      }
    }
  },

  runtimeConfig: {
    public: {
      isShowCPU: process.env.NUXT_PUBLIC_CPU,
    },
  }
})